]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
searchDisplay: Remove the "provider meta"
authorJasper St. Pierre <jstpierre@mecheye.net>
Fri, 8 Feb 2013 23:23:53 +0000 (18:23 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 29 May 2013 15:32:50 +0000 (11:32 -0400)
As everything is tracked on the SearchResults or subclasses of now,
just use that, which we call the "provider display".

https://bugzilla.gnome.org/show_bug.cgi?id=693836

js/ui/searchDisplay.js
js/ui/viewSelector.js

index 576cd9b85e8ecd7d7e99f11bf532ab3eed1c0094..3785b5e2b130baf81f6f7875f3d7d48ad852b9eb 100644 (file)
@@ -200,6 +200,12 @@ const SearchResultsBase = new Lang.Class({
         this.actor.add(separator.actor);
     },
 
+    destroy: function() {
+        this.actor.destroy();
+        this._notDisplayedResult = [];
+        this._terms = [];
+    },
+
     _clearResultDisplay: function() {
     },
 
@@ -401,9 +407,9 @@ const SearchResults = new Lang.Class({
         this._content.add(this._statusBin, { expand: true });
         this._statusBin.add_actor(this._statusText);
         this._providers = this._searchSystem.getProviders();
-        this._providerMeta = [];
+        this._providerDisplays = {};
         for (let i = 0; i < this._providers.length; i++) {
-            this.createProviderMeta(this._providers[i]);
+            this.createProviderDisplay(this._providers[i]);
         }
 
         this._highlightDefault = false;
@@ -421,45 +427,30 @@ const SearchResults = new Lang.Class({
         Util.ensureActorVisibleInScrollView(this._scrollView, icon);
     },
 
-    createProviderMeta: function(provider) {
-        let resultDisplay = null;
+    createProviderDisplay: function(provider) {
+        let providerDisplay = null;
 
         if (provider.appInfo) {
-            resultDisplay = new ListSearchResults(provider);
+            providerDisplay = new ListSearchResults(provider);
         } else {
-            resultDisplay = new GridSearchResults(provider);
+            providerDisplay = new GridSearchResults(provider);
         }
 
-        resultDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
-
-        let resultDisplayBin = new St.Bin({ child: resultDisplay.actor,
-                                            x_fill: true,
-                                            y_fill: true });
-        providerBox.add(resultDisplayBin, { expand: true });
-
-        let separator = new Separator.HorizontalSeparator({ style_class: 'search-section-separator' });
-        providerBox.add(separator.actor);
-
-        this._providerMeta.push({ provider: provider,
-                                  resultDisplay: resultDisplay });
-        this._content.add(resultDisplay.actor);
+        providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
+        this._providerDisplays[provider.id] = providerDisplay;
+        this._content.add(providerDisplay.actor);
     },
 
-    destroyProviderMeta: function(provider) {
-        for (let i=0; i < this._providerMeta.length; i++) {
-            let meta = this._providerMeta[i];
-            if (meta.provider == provider) {
-                meta.resultDisplay.actor.destroy();
-                this._providerMeta.splice(i, 1);
-                break;
-            }
-        }
+    destroyProviderDisplay: function(provider) {
+        this._providerDisplays[provider.id].destroy();
+        delete this._providerDisplays[provider.id];
     },
 
     _clearDisplay: function() {
-        for (let i = 0; i < this._providerMeta.length; i++) {
-            let meta = this._providerMeta[i];
-            meta.resultDisplay.clear();
+        for (let i = 0; i < this._providers.length; i++) {
+            let provider = this._providers[i];
+            let providerDisplay = this._providerDisplays[provider.id];
+            providerDisplay.clear();
         }
     },
 
@@ -476,20 +467,17 @@ const SearchResults = new Lang.Class({
         this._statusBin.show();
     },
 
-    _metaForProvider: function(provider) {
-        return this._providerMeta[this._providers.indexOf(provider)];
-    },
-
     _maybeSetInitialSelection: function() {
         let newDefaultResult = null;
 
-        for (let i = 0; i < this._providerMeta.length; i++) {
-            let meta = this._providerMeta[i];
+        for (let i = 0; i < this._providers.length; i++) {
+            let provider = this._providers[i];
+            let display = this._providerDisplays[provider.id];
 
-            if (!meta.resultDisplay.actor.visible)
+            if (!display.actor.visible)
                 continue;
 
-            let firstResult = meta.resultDisplay.getFirstResult();
+            let firstResult = display.getFirstResult();
             if (firstResult) {
                 newDefaultResult = firstResult;
                 break; // select this one!
@@ -509,11 +497,14 @@ const SearchResults = new Lang.Class({
     _updateStatusText: function () {
         let haveResults = false;
 
-        for (let i = 0; i < this._providerMeta.length; ++i)
-            if (this._providerMeta[i].resultDisplay.getFirstResult()) {
+        for (let i = 0; i < this._providers.length; i++) {
+            let provider = this._providers[i];
+            let display = this._providerDisplays[provider.id];
+            if (display.getFirstResult()) {
                 haveResults = true;
                 break;
             }
+        }
 
         if (!haveResults) {
             this._statusText.set_text(_("No results."));
@@ -526,9 +517,9 @@ const SearchResults = new Lang.Class({
     _updateResults: function(searchSystem, results) {
         let terms = searchSystem.getTerms();
         let [provider, providerResults] = results;
-        let meta = this._metaForProvider(provider);
+        let display = this._providerDisplays[provider.id];
 
-        meta.resultDisplay.updateSearch(providerResults, terms, Lang.bind(this, function() {
+        display.updateSearch(providerResults, terms, Lang.bind(this, function() {
             this._maybeSetInitialSelection();
             this._updateStatusText();
         }));
index ade52d0a8b7d918cb008d6a7514006437bda0e19..70623291ad41a19c919a19ceeb1957013491c614 100644 (file)
@@ -508,12 +508,12 @@ const ViewSelector = new Lang.Class({
             return;
 
         this._searchSystem.registerProvider(provider);
-        this._searchResults.createProviderMeta(provider);
+        this._searchResults.createProviderDisplay(provider);
     },
 
     removeSearchProvider: function(provider) {
         this._searchSystem.unregisterProvider(provider);
-        this._searchResults.destroyProviderMeta(provider);
+        this._searchResults.destroyProviderDisplay(provider);
     },
 
     getActivePage: function() {